package ServiceLocator;

import java.lang.reflect.Field;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
/**
 * Clase utilitaria que permite ubicar los EJB en el servidor.
 * @author Camilo Andres
 */
public class ServiceLocator {
	
	/**
	 * Contante que hace referencia al contexto del servidor weblogic.
	 */
	private static final String CONTEXT_FACTORY = "weblogic.jndi.WLInitialContextFactory";
	/**
	 * Cosntante que define la URL del servidor weblogic.
	 */
	private static final String URL_SERVER = "t3://localhost:7001/";
	
	
	/**
	 * Metodo para localizar en el servdor de aplicaciones el EJB a probar.
	 * @param <T>  Generico que hace referencia al EJB deseado.
	 * @param ejb .class de la interfaz remota del EJB.
	 * @param nombreJNDI nombre JNDI del EJB. 
	 * @return la interfaz remota del EJB en cuestion.
	 */
	public static <T extends Object> T  buscarEJB(Class<T> ejb,String nombreJNDI){
		
		Properties prop = new Properties();
		prop.put(Context.INITIAL_CONTEXT_FACTORY,
				CONTEXT_FACTORY);
		prop.put(Context.PROVIDER_URL, URL_SERVER);
		
		try {
			InitialContext contexto = new InitialContext(prop);
			
			
			return ejb.cast(contexto.lookup(nombreJNDI));
			
			
		}catch (Exception e) {
			e.printStackTrace();
		}
		
		return null;
	}

}
